package frontera;

import entidad.Clientes;
import entidad.Servicios;
import entidad.Sistema;
import entidad.TiposServicios;
import entidad.Usuario;
import java.util.ArrayList;

public class FramePrincipal1 extends javax.swing.JFrame {

    private Ingreso1GUI ingreso1GUI;
    private MovimientosGUI movimientosGUI;
    private ClientesGUI clientesGUI;
	private CheckInGUI checkInGUI;  
	private ServiciosGUI serviciosGUI;
    public int acceso = 0;//Controla la ejecución de interfaces sin previo regístro.

    public static Sistema sistema = new Sistema();
    
    
    /** Creates new form FramePrincipal1 */
    public FramePrincipal1(){
        initComponents();
        inicializacion();
        
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelPrincipal = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        mensaje = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        IniciarSesionB = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JSeparator();
        salirB = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        checkInMenu = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();
        checkOutMenu = new javax.swing.JMenuItem();
        clientes_menu = new javax.swing.JMenu();
        jMenuItem2 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Login de Usuario");

        panelPrincipal.setLayout(new java.awt.BorderLayout());

        jButton1.setText("jButton1");

        jButton2.setText("jButton2");

        mensaje.setFont(new java.awt.Font("Tahoma", 1, 12));
        mensaje.setForeground(new java.awt.Color(204, 0, 0));

        jMenu1.setText("Archivo");

        IniciarSesionB.setText("Iniciar Sesión");
        IniciarSesionB.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                IniciarSesionBActionPerformed(evt);
            }
        });
        jMenu1.add(IniciarSesionB);
        jMenu1.add(jSeparator1);

        salirB.setText("Salir");
        jMenu1.add(salirB);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Facturación");

        checkInMenu.setText("Check-In");
        checkInMenu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                checkInMenuActionPerformed(evt);
            }
        });
        jMenu2.add(checkInMenu);

        jMenuItem1.setText("Movimientos");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem1);

        checkOutMenu.setText("Check-Out");
        jMenu2.add(checkOutMenu);

        jMenuBar1.add(jMenu2);

        clientes_menu.setText("Clientes");
        clientes_menu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                launch_clientes(evt);
            }
        });

        jMenuItem2.setText("Clientes");
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                launch_clientes(evt);
            }
        });
        clientes_menu.add(jMenuItem2);

        jMenuBar1.add(clientes_menu);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panelPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, 804, Short.MAX_VALUE)
                    .addComponent(mensaje))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(mensaje)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, 601, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void IniciarSesionBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_IniciarSesionBActionPerformed
        abrirLoginUI();
    }//GEN-LAST:event_IniciarSesionBActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        abrirMovimientos();
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    public void abrirLoginUI(){
        panelPrincipal.setVisible(false);
        panelPrincipal.removeAll();
        ingreso1GUI = new Ingreso1GUI(this);
        panelPrincipal.add(ingreso1GUI);
        panelPrincipal.setVisible(true);
    }

    public void abrirMovimientos(){
        if(acceso==1){
            panelPrincipal.setVisible(false);
            panelPrincipal.removeAll();
            movimientosGUI = new MovimientosGUI();
            panelPrincipal.add(movimientosGUI);
            panelPrincipal.setVisible(true);
        }else mensaje.setText("Esta interfaz necesita registro.");
    }

    public void abrirClientes(){
        if(acceso==1){
            panelPrincipal.setVisible(false);
            panelPrincipal.removeAll();
            clientesGUI = new ClientesGUI();
            panelPrincipal.add(clientesGUI);
            panelPrincipal.setVisible(true);
        }else mensaje.setText("Esta interfaz necesita registro.");
    }

    private void abrirCheckIn(){
        if(acceso==1){
            panelPrincipal.setVisible(false);
            panelPrincipal.removeAll();
            checkInGUI = new CheckInGUI();
            panelPrincipal.add(checkInGUI);
            panelPrincipal.setVisible(true);
        }else mensaje.setText("Esta interfaz necesita registro.");
    }

    private void abrirCheckOut(){
        if(acceso==1){
            panelPrincipal.setVisible(false);
            panelPrincipal.removeAll();
            CheckOutGUI checkOutGUI = new CheckOutGUI();
            panelPrincipal.add(checkOutGUI);
            panelPrincipal.setVisible(true);
        }else mensaje.setText("Esta interfaz necesita registro.");
    }
    
     private void launch_servicios(java.awt.event.ActionEvent evt) {                                  
        if(acceso==1){
        panelPrincipal.setVisible(false);
        panelPrincipal.removeAll();
        serviciosGUI = new ServiciosGUI();
        panelPrincipal.add(serviciosGUI);
        panelPrincipal.setVisible(true);
        } else mensaje.setText("Esta interfaz necesita registro.");
    }

    //@autor: andres
    private void launch_clientes(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_launch_clientes
        abrirClientes();
    }//GEN-LAST:event_launch_clientes

    private void checkInMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkInMenuActionPerformed
        abrirCheckIn();
    }//GEN-LAST:event_checkInMenuActionPerformed

    private void checkOutMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkOutMenuActionPerformed
        abrirCheckOut();
    }//GEN-LAST:event_checkOutMenuActionPerformed

    public void setMensaje(String msj){
        mensaje.setText(msj);
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() { 
                new FramePrincipal1().setVisible(true);
            }
        });
    }

    public void inicializacion(){
        crearUsuarios();
        crearTipoServicios();
        crearClientes();
        
    }

    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem IniciarSesionB;
    private javax.swing.JMenuItem checkInMenu;
    private javax.swing.JMenuItem checkOutMenu;
    private javax.swing.JMenu clientes_menu;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JLabel mensaje;
    private javax.swing.JPanel panelPrincipal;
    private javax.swing.JMenuItem salirB;
    // End of variables declaration//GEN-END:variables

    /**
     * crearUsuarios
     * Crea los Usuarios por defecto del Sistema
     */
    private void crearUsuarios(){
        ArrayList<Usuario> usuarios = new ArrayList<Usuario>();
        Usuario u1 = new Usuario();
        u1.setNombre("admin");
        u1.setContrasenia("admin");

        Usuario u2 = new Usuario();
        u2.setNombre("Andres");
        u2.setContrasenia("root1");

        Usuario u3 = new Usuario();
        u3.setNombre("Giovanny");
        u3.setContrasenia("root2");

        usuarios.add(u1);
        usuarios.add(u2);
        usuarios.add(u3);

        sistema.setUsuarios(usuarios);
    }

    /**
     * crearClientes
     * Crea los Clientes por defecto del Sistema
     */
    private void crearClientes(){
        ArrayList<Clientes> clientes = new ArrayList<Clientes>();
        Clientes c1 = new Clientes();
        c1.setId(1);
        c1.setNombre("Camila Sandoval");
        c1.setCedula(111111);

        Clientes c2 = new Clientes();
        c2.setId(1);
        c2.setNombre("José Novoa");
        c2.setCedula(222222);

        Clientes c3 = new Clientes();
        c3.setId(1);
        c3.setNombre("Adriana Marín");
        c3.setCedula(333333);

        clientes.add(c1);
        clientes.add(c2);
        clientes.add(c3);

        sistema.setClientes(clientes);
    }

    /**
     * crearTipoServicios
     * Crea los Tipos de Servicios por defecto del Sistema
     * Y crea los servicios por defecto de cada tipo
     */
    private void crearTipoServicios(){
        ArrayList<TiposServicios> tipos = new ArrayList<TiposServicios>();
        ArrayList<Servicios> servicios = new ArrayList<Servicios>();

        TiposServicios t1 = new TiposServicios();
        t1.setId(1);
        t1.setNombre("Hospedaje");
        //Tipo 1: Hospedaje
        Servicios s1 = new Servicios();
        s1.setId(1);
        s1.setNombre("Habitación 101");
        s1.setCantidad(1);
        s1.setEstado(true);
        s1.setIva(16);
        s1.setValorUnitario(200000);
        s1.setTipoServicio(t1);

        Servicios s2 = new Servicios();
        s2.setId(2);
        s2.setNombre("Habitación 102");
        s2.setCantidad(1);
        s2.setEstado(true);
        s2.setIva(16);
        s2.setValorUnitario(200000);
        s2.setTipoServicio(t1);

        Servicios s3 = new Servicios();
        s3.setId(3);
        s3.setNombre("Habitación 201");
        s3.setCantidad(1);
        s3.setEstado(true);
        s3.setIva(16);
        s3.setValorUnitario(450000);
        s3.setTipoServicio(t1);

        Servicios s4 = new Servicios();
        s4.setId(4);
        s4.setNombre("Habitación 202");
        s4.setCantidad(1);
        s4.setEstado(true);
        s4.setIva(16);
        s4.setValorUnitario(450000);
        s4.setTipoServicio(t1);

        Servicios s5 = new Servicios();
        s5.setId(5);
        s5.setNombre("Suite 301");
        s5.setCantidad(1);
        s5.setEstado(true);
        s5.setIva(16);
        s5.setValorUnitario(680000);
        s5.setTipoServicio(t1);

        Servicios s6 = new Servicios();
        s6.setId(6);
        s6.setNombre("Suite 302");
        s6.setCantidad(1);
        s6.setEstado(true);
        s6.setIva(16);
        s6.setValorUnitario(1000000);
        s6.setTipoServicio(t1);

        servicios.add(s1);
        servicios.add(s2);
        servicios.add(s3);
        servicios.add(s4);
        servicios.add(s5);
        servicios.add(s6);

        TiposServicios t2 = new TiposServicios();
        t2.setId(2);
        t2.setNombre("Restaurante");
        //Tipo 2: Restaurante
        Servicios s7 = new Servicios();
        s7.setId(7);
        s7.setNombre("Plato Especial");
        s7.setCantidad(1);
        s7.setEstado(true);
        s7.setIva(20);
        s7.setValorUnitario(12000);
        s7.setTipoServicio(t2);

        Servicios s8 = new Servicios();
        s8.setId(8);
        s8.setNombre("Buffet");
        s8.setCantidad(1);
        s8.setEstado(true);
        s8.setIva(20);
        s8.setValorUnitario(15000);
        s8.setTipoServicio(t2);

        Servicios s9 = new Servicios();
        s9.setId(9);
        s9.setNombre("Desayunos");
        s9.setCantidad(1);
        s9.setEstado(true);
        s9.setIva(20);
        s9.setValorUnitario(5000);
        s9.setTipoServicio(t2);

        servicios.add(s7);
        servicios.add(s8);
        servicios.add(s9);


        TiposServicios t3 = new TiposServicios();
        t3.setId(3);
        t3.setNombre("Eventos");
        //Tipo 3: Eventos
        Servicios s10 = new Servicios();
        s10.setId(10);
        s10.setNombre("Salon de Conferencias");
        s10.setCantidad(1);
        s10.setEstado(true);
        s10.setIva(16);
        s10.setValorUnitario(300000);
        s10.setTipoServicio(t3);

        Servicios s11 = new Servicios();
        s11.setId(11);
        s11.setNombre("Salon de Eventos");
        s11.setCantidad(1);
        s11.setEstado(true);
        s11.setIva(16);
        s11.setValorUnitario(200000);
        s11.setTipoServicio(t3);

        servicios.add(s10);
        servicios.add(s11);


        TiposServicios t4 = new TiposServicios();
        t4.setId(4);
        t4.setNombre("Confort");
        //Tipo 4: Confort
        Servicios s12 = new Servicios();
        s12.setId(12);
        s12.setNombre("Zona de Masajes");
        s12.setCantidad(1);
        s12.setEstado(true);
        s12.setIva(20);
        s12.setValorUnitario(15000);
        s12.setTipoServicio(t4);

        Servicios s13 = new Servicios();
        s13.setId(13);
        s13.setNombre("Gimnasio");
        s13.setCantidad(1);
        s13.setEstado(true);
        s13.setIva(20);
        s13.setValorUnitario(5000);
        s13.setTipoServicio(t4);

        Servicios s14 = new Servicios();
        s14.setId(14);
        s14.setNombre("Sauna");
        s14.setCantidad(1);
        s14.setEstado(true);
        s14.setIva(20);
        s14.setValorUnitario(8000);
        s14.setTipoServicio(t4);

        servicios.add(s12);
        servicios.add(s13);
        servicios.add(s14);

        tipos.add(t1);
        tipos.add(t2);
        tipos.add(t3);
        tipos.add(t4);

        sistema.setTiposServicios(tipos);
        sistema.setServicios(servicios);
    }
}
